package controlador;

import java.awt.event.*;
import java.io.IOException;
import javax.swing.*;
import javax.xml.parsers.ParserConfigurationException;

import negModel.*;
import vista.Mensajes;


public class ControladorVistaSeleccionarJugador {
	
	private ControladorDeVentanas contVent;
	private Taller taller;
	private CargarModelo cargador=new CargarModelo();;
	private Mensajes mens=new Mensajes();
	private ListaJugadores lj;
	private String nombreArchivo = new String ("ListaJugadores.xml");
	

	public ControladorVistaSeleccionarJugador (ControladorDeVentanas contVent){
		this.contVent=contVent;
		
		try {
			lj = ListaJugadores.cargar(nombreArchivo);
		} catch (IOException e) {
			e.printStackTrace();
		} catch (ClassNotFoundException e) {
			e.printStackTrace();
		}
		
	}

	private class EscuchaBotonSalir implements ActionListener
	{	public void actionPerformed(ActionEvent e)
		{
		if(mens.deseaSalir()==0)
					System.exit(0);
		}
	}

	public ActionListener getListenerBotonSalir() {
		return new EscuchaBotonSalir();
	}
	

	private class EscuchaBotonVolver implements ActionListener
	{	public void actionPerformed(ActionEvent e)
		{
		if (mens.deseaVolver()==0){
			contVent.AbrirVentanaMenuPrincipal();
			contVent.OcultarVentanaSeleccionarJugador();
			}
		}
	}

	public ActionListener getListenerBotonVolver() {
		return new EscuchaBotonVolver();
	}

	private class EscuchaBotonAceptar implements ActionListener
	{	public void actionPerformed(ActionEvent e)
		{
			
		    int indice=contVent.ObtenerIndiceJugadores();
		   
			if (indice>=0){
				PersonajeJugador j =(PersonajeJugador)lj.get(indice); 
				contVent.setJugador(j);
				mens.confirmacionJugador(j.getNombre());
				contVent.OcultarVentanaSeleccionarJugador();
				contVent.AbrirVentanaTaller();
				contVent.ActualizarVistaTallerAutos();
				contVent.ActualizarDinero();
			}
			else
				mens.noExistenJugadores();

		}
	}

	public ActionListener getListenerBotonAceptar() {
		return new EscuchaBotonAceptar();
	}
		
	public DefaultListModel CargarModeloJugadores (){
		return cargador.CargarModeloJugador(lj);
	}
	
	public ListaJugadores ObtenerListaJugadores(){
		return this.lj;
	}
	
	public Taller DevolverTaller (){
		return taller;
	}

	public void guardar() {
		
		try {
			ListaJugadores.guardar(nombreArchivo, lj);
		} catch (IOException e) {
			e.printStackTrace();
		} catch (ParserConfigurationException e) {
			e.printStackTrace();
		}
		
	}
		
}
